#ifndef __FileSegmentHeader_h__
#define __FileSegmentHeader_h__

#include <string>


/**
 * En-tete pour un segment de fichier.
 */
struct FileSegmentHeader
{
	/** Nom du fichier auquel appartient le segment. */
	std::string fileName;
	/** Numero unique du segment dans le fichier. */
	uint32_t segmentNum;

	FileSegmentHeader(const std::string& pFileName=std::string(),
		const uint32_t& pSegmentNum=0);

	/** Calculer la taille de cet en-tete. */
	size_t size() const;

	/**
	 * Ecrire cet en-tete dans le buffer donne.
	 *
	 * @param buffer Buffer dans lequel ecrire.
	 * @param bufferSize Taille du buffer.
	 * @throws std::invalid_argument Si la taille du buffer est trop petite.
	 */
	void write_to(char* buffer, size_t bufferSize) const;
	/**
	 * Remplir cet en-tete avec les donnees contenues dans le buffer donne.
	 *
	 * @param buffer Buffer depuis lequel lire.
	 * @param bufferSize Taille du buffer.
	 * @throws std::invalid_argument Si la taille du buffer est trop petite.
	 */
	void read_from(const char* buffer, size_t bufferSize);
};


#endif // __FileSegmentHeader_h__
